Since compact disc drives were added to personal computers many years ago, personal computers have been used for playing first audio and then video works of authorship. The common implementations use either a mouse or a standard text keyboard to control the playout software. If a mouse is used, images of buttons for some of the customary playout control functions (play, stop, pause, fast forward, rewind, skip to next or last track, volume, mute, and change channel) are displayed on the screen. The mouse controls cursor movement, and a click of the mouse when the cursor is over a button causes the playout software to control the playout accordingly. If a standard text keyboard is used, keys of the keyboard will be selected for each of the control functions listed above, such as “P” for play and right and left arrows for fast-forward and rewind. The audio/video playout control software is typically loaded to the computing device from a transportable disc or may be downloaded across a network for installation or may be embedded in a markup language page such as with use of a Java applet or ActiveX control embedded in an HTML page which is transparent to the user and requires little to no action by the user to install or begin execution of the software.
Users of computer systems to play audio/video works can add remote control devices such as those commonly used for televisions or for audio stereo systems to allow control of the playout of audio/video works from anywhere in the same room. Radio or infrared receiving devices for such remote controls can be added to an input port on the computer, such as a USB (Universal Serial Bus) port. Then, a specialized audio/video work playout program is added which includes instructions to receive keystroke data through the port and interpret said data in order to recognize remote control key presses. This allows the remote key presses to effect audio/video playout according to which key is pressed.
As audio/video playout programs became commonplace on personal computers, it became desirable to be able to control a wide variety of audio/video control programs that are designed for text keyboard input using a hand-held remote. To accomplish this, special software (sometimes called a “wedge”) can be installed on the computer to control communications through the port, receive keystroke data from the remote control, translate the keystroke data to standard text keystroke data such as “P” for play, and provide the standard keystroke data to the operating system which provides it to the playout control software. Thus, with the remote control added to the computer system and the special control software installed, the remote control can simulate keystrokes at the text keyboard to control audio/video playout control software designed for receiving text keyboard input. Then the user can control the audio/video playout control software using either the text keyboard or the remote control.
There are two serious deficiencies with this system. First, the system can no longer use for their original intended purpose the standard text keys that are used to indicate audio/video playout control. For example, a playout control program that uses “P” to indicate “pause playout” or left and right arrows to indicate “previous audio/video work” or “next audio/video work” are not able to use these same keys to allow the user to type a music artist or song name into an edit box. Second, the translator program must be tailored to work with differing varieties of audio/video playout programs, all of which use differing keys to represent each playout control action.
Newer operating systems, such as Microsoft's Windows 2000, address these problems by creating a standard set of key codes that are passed to applications when a playout control key is pressed. These standard key codes are used specifically for keyboards or other input devices with dedicated keys for playout control purposes. This method carries the advantage that any application can be easily made to recognize playout control key presses.
This approach still suffers from deficiencies because the operating system delivers each playout control key press event to software programs in the same way that a text keyboard key event would be delivered. Specifically, if a user presses a key when several software programs are running, the operating system must determine which one of those applications is to receive the notification of key-press, or “key event”. The existing approach is to send key press information only to the application window with which the user is actively interacting. This approach makes sense for most applications, but audio/video playout control applications—in particular, audio player programs—are an exception.
It is a common occurrence to simultaneously execute an audio/video playout program and another program that demands user input, such as a word processor. Typically the audio/video playout program is run in the background because it requires less user attention to operate. However, because existing systems send keystrokes to the foreground program, the user must explicitly select the audio/video program to be the foreground program (usually by moving the mouse over the audio/video playout program window and clicking the mouse), before being able to send audio/video playout key-press events to the audio/video playout program. This adds an additional, inconvenient and unnecessary step to audio/video playout program operation.
The requirement that the user must specifically select the audio/video playout control application to perform audio/video playout control is particularly confusing to the user when presented with a web page that consists of a markup language with one or more embedded applications. In this case, though the user is presented with what appears to be a single web application, it is in reality a conglomerate of one or more applications as well as text, graphics, and user interface items such as checkboxes or text boxes where one may provide input using the keyboard or mouse. On the web page, in order to control the audio/video playout application, the user must select the portion of the web page that displays the playout application to place it in the “foreground” before being able to press a playout control key that will control the embedded audio/video playout program. Furthermore, if the user were to click on any other web page constituents, the playout application would no longer receive keyboard events, preventing the user from using the dedicated audio/video keys to control audio/video playout.
In modern operating systems, where multiple computer programs may operate concurrently as one or more “windows” on a screen, or as one or more “child” windows of a web browser, standard keyboard-press events are communicated by the operating system to the window that has the “keyboard focus” (is in the “foreground”). The keyboard focus is typically assigned by the user to a window by placing the mouse cursor over a window and clicking a mouse button. If the assigned window is a window where the user can type text, often a flashing text cursor can be seen in the window that has the keyboard focus. Windows that do not have flashing text cursors typically indicate visually that they have the keyboard focus by changing the color of the application's primary window's title bar.
On existing computers equipped with a common (text) keyboard as well as dedicated keys for audio/video playout control (sometimes on a wireless hand-held remote), such dedicated audio/video control key-presses are communicated to the application window that has the keyboard focus, just as are standard key presses. Alternatively, the operating software delivers audio/video key events only to a specialized set of programs customized for the device.